package com.evenmo.hrms.pojo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Date;
import java.util.List;

@Data
public class TestAjaxJsonParam implements Serializable {
    //    private List<String> arrayParam;
    // 测试接收 数组
    private String[] arrayParam;

    // JsonFormat用于给前端返回的序列化数据做格式化,毫秒用SSS，不加则返回LocalDateTime的默认输出格式
//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", shape = JsonFormat.Shape.STRING)
    // 前后端传递时间字符串格式要一致，用户参数绑定时的时间格式化
//        @DateTimeFormat(pattern ="yyyy-MM-dd HH:mm:ss")
    private LocalDateTime localDateTime;

    // java Date类型的转换要设置时区
    //    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
    //    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")//timezone 也可以是"GMT+8"
    // 返回给前端时间戳,springboot配置全局jackon序列化是java的Date可以转换成时间戳，其他类型不可以转换，要转换，需要重新配置
//    @JsonFormat(shape = JsonFormat.Shape.NUMBER)
    //接收前端字符串时间戳，配置了全局序列化后，不加此注解则为全局配置的输出形式，加注解则是注解配置优先
//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8", shape = JsonFormat.Shape.STRING)
    private Date date;

    // 对于LocalDateTime默认但返回了数组，但配置了全局时间戳转换配置后，得到了正确的结果，加了此注解且shape类型是NUMBER时，与全局转换结果一致
//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8", shape = JsonFormat.Shape.STRING)
//    @JsonFormat(shape = JsonFormat.Shape.NUMBER)
    // 测试接收前端返回的时间戳转换到LocalDateTime上
    private LocalDateTime localDateTime_timestamp;

    //测试接收前端字符串时间戳
    private LocalDate localDate;
    // 测试接收前端时间
//    @JsonFormat(pattern = "HH:mm:ss")
    private LocalTime localTime;


}
